# 使用官方 Go 1.21 镜像作为基础镜像
FROM --platform=$BUILDPLATFORM golang:1-bullseye AS builder
#定义一个构建参数 TARGETOS，用于指定目标操作系统的名称。
ARG TARGETOS
#定义一个构建参数 TARGETARCH，用于指定目标架构的名称。
ARG TARGETARCH
ENV CGO_ENABLED=0
ENV GOPROXY=https://goproxy.cn,direct
ENV GOOS=$TARGETOS
ENV GOARCH=$TARGETARCH

# 设置工作目录
WORKDIR /app

# 将 go.mod 和 go.sum 文件复制到容器中
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download
RUN go mod tidy
# 复制源代码到容器
COPY . . /app/

# 构建应用
RUN go build -o nvr_proxy ./cmd/main.go

# 第二阶段编译
FROM debian:bullseye-slim


# 设置工作目录
WORKDIR /app

# 复制构建好的二进制文件到最终镜像
COPY --from=builder /app/nvr_proxy /app/nvr_proxy
# 暴露应用程序的端口
EXPOSE 13523

# 运行应用程序
CMD ["./nvr_proxy"]

